package com.fangs.kotlin_banner.banner

import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager
import java.lang.Exception

class ViewPagerBanner : ViewPager {
    //是否可以进行滑动
    private var isSlide = true //false:不可以滑动；true:可以滑动

    constructor(context: Context) : super(context) {
        init()
    }

    /**
     * //@Nullable ,可以传入空指针
     * //@Nonnull ,不可以传入空指针
     */
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
        init()
    }

    private fun init() { //设置翻页动画的过度时间为2秒 SetCurrentItem()
        try {
            val scrollerField = ViewPager::class.java.getDeclaredField("mScroller")
            scrollerField.isAccessible = true
            scrollerField[this] = MyBannerScroller(context, 1000)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

    fun setSlide(slide: Boolean) {
        isSlide = slide
    }

    /**
     * 1.dispatchTouchEvent一般情况不做处理
     * ,如果修改了默认的返回值,子孩子都无法收到事件
     */
    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
        return super.dispatchTouchEvent(ev) // return true;不行
    }

    /**
     * 是否拦截
     * 拦截:会走到自己的onTouchEvent方法里面来
     * 不拦截:事件传递给子孩子
     */
    override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {
        return super.onInterceptTouchEvent(ev)
    }

    /**
     * 是否消费事件
     * 消费:事件就结束
     * 不消费:往父控件传
     */
    override fun onTouchEvent(ev: MotionEvent): Boolean {
        super.onTouchEvent(ev)
        return isSlide // 可行,消费,拦截事件
    }
}